package com.zcl.logic;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.drawable.Drawable;

import com.zcl.bean.UserInfo;
import com.zcl.database.DBHelper;
import com.zcl.utils.NqUtil;

public class UserInfoService {
	private DBHelper dbHelper;
	
	public UserInfoService(Context context)
	{
		dbHelper = new DBHelper(context);
	}
	
	/**
	 * 添加用户信息
	 * @param info
	 */
	public long insertUserInfo(UserInfo info)
	{
		SQLiteDatabase db = dbHelper.getWritableDatabase();
		ContentValues values = new ContentValues();
		values.put(UserInfo.USER_ID, info.getUserId());
		values.put(UserInfo.USER_NAME, info.getUserName());
		values.put(UserInfo.USER_TOKEN, info.getToken());
		values.put(UserInfo.USER_TOKENSECRET, info.getTokenSecret());
		values.put(UserInfo.IS_DEFAULT, info.getIsDefualt());
		values.put(UserInfo.USER_ICON, NqUtil.drawableConvertByte(info.getUserIcon()));
		long reuslt = db.insert(UserInfo.TABLE_NAME, null, values);
		db.close();
		return reuslt;
	}
	
	/**
	 * 更新用户信息
	 * @param info
	 * @param rowId 行号
	 */
	public int updateUserInfo(UserInfo info, long rowId)
	{
		SQLiteDatabase db = dbHelper.getWritableDatabase();
		ContentValues values = new ContentValues();
		values.put(UserInfo.USER_ID, info.getUserId());
		values.put(UserInfo.USER_NAME, info.getUserName());
		values.put(UserInfo.USER_TOKEN, info.getToken());
		values.put(UserInfo.USER_TOKENSECRET, info.getTokenSecret());
		values.put(UserInfo.IS_DEFAULT, info.getIsDefualt());
		values.put(UserInfo.USER_ICON, NqUtil.drawableConvertByte(info.getUserIcon()));
		int result = db.update(UserInfo.TABLE_NAME, values, UserInfo.ID+"="+rowId, null);
		db.close();
		return result;
	}
	
	/**
	 * 更新用户头像
	 * @param info
	 * @param userIcon
	 * @return
	 */
	public int updateUserInfo(UserInfo info, Drawable userIcon)
	{
		SQLiteDatabase db = dbHelper.getWritableDatabase();
		ContentValues values = new ContentValues(2);
		values.put(UserInfo.USER_ICON, NqUtil.drawableConvertByte(userIcon));
		int result = db.update(UserInfo.TABLE_NAME, values, UserInfo.USER_ID + "=" +info.getUserId(), null);
		db.close();
		return result;
	}
	
	/**
	 * 根据userId返回用户信息
	 * @param userId
	 * @return
	 */
	public UserInfo getUserInfoByUserId(String userId)
	{
		SQLiteDatabase db = dbHelper.getWritableDatabase();
		Cursor cursor = db.query(UserInfo.TABLE_NAME, new String[]{UserInfo.ID, UserInfo.USER_ID, UserInfo.USER_NAME,UserInfo.USER_TOKEN,
				UserInfo.USER_TOKENSECRET, UserInfo.IS_DEFAULT, UserInfo.USER_ICON}, UserInfo.USER_ID+"=?", new String[]{userId}, null, null, null);
		if (null!=cursor && cursor.getCount()>0 && cursor.moveToFirst()) {
			Long id = cursor.getLong(cursor.getColumnIndex(UserInfo.ID));
			String userID = cursor.getString(cursor.getColumnIndex(UserInfo.USER_ID));
			String userName = cursor.getString(cursor.getColumnIndex(UserInfo.USER_NAME));
			String userToken = cursor.getString(cursor.getColumnIndex(UserInfo.USER_TOKEN));
			String userTokenSecret = cursor.getString(cursor.getColumnIndex(UserInfo.USER_TOKENSECRET));
			String isDefault = cursor.getString(cursor.getColumnIndex(UserInfo.IS_DEFAULT));
			byte[] userIcon = cursor.getBlob(cursor.getColumnIndex(UserInfo.USER_ICON));
			UserInfo info = new UserInfo();
			info.setId(id);
			info.setUserId(userID);
			info.setUserName(userName);
			info.setToken(userToken);
			info.setTokenSecret(userTokenSecret);
			info.setIsDefualt(isDefault);
			info.setUserIcon(NqUtil.byteConvertDrawable(userIcon));
			return info;
		}
		cursor.close();
		db.close();
		return null;
	}
	
	/**
	 * 返回所有用户信息
	 * @return
	 */
	public List<UserInfo> findAllUsers()
	{
		List<UserInfo> users = null;
		SQLiteDatabase db = dbHelper.getReadableDatabase();
		Cursor cursor = db.query(UserInfo.TABLE_NAME, new String[]{UserInfo.ID, UserInfo.USER_ID, UserInfo.USER_NAME,UserInfo.USER_TOKEN,
				UserInfo.USER_TOKENSECRET, UserInfo.IS_DEFAULT, UserInfo.USER_ICON}, null, null, null, null, null);
		if (null!=cursor && cursor.getCount()>0) {
			users = new ArrayList<UserInfo>(cursor.getCount());
			UserInfo info = null;
			while (cursor.moveToNext()) {
				Long id = cursor.getLong(cursor.getColumnIndex(UserInfo.ID));
				String userID = cursor.getString(cursor.getColumnIndex(UserInfo.USER_ID));
				String userName = cursor.getString(cursor.getColumnIndex(UserInfo.USER_NAME));
				String userToken = cursor.getString(cursor.getColumnIndex(UserInfo.USER_TOKEN));
				String userTokenSecret = cursor.getString(cursor.getColumnIndex(UserInfo.USER_TOKENSECRET));
				String isDefault = cursor.getString(cursor.getColumnIndex(UserInfo.IS_DEFAULT));
				byte[] byteIcon = cursor.getBlob(cursor.getColumnIndex(UserInfo.USER_ICON));
				info = new UserInfo();
				info.setId(id);
				info.setUserId(userID);
				info.setUserName(userName);
				info.setToken(userToken);
				info.setTokenSecret(userTokenSecret);
				info.setIsDefualt(isDefault);
				if (null!=byteIcon && byteIcon.length!=0) {
					info.setUserIcon(NqUtil.byteConvertDrawable(byteIcon));
				}
				users.add(info);
			}
		}
		cursor.close();
		db.close();
		return users;
	}
}
